/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package stack;

/**
 *
 * @author Mardiego
 */
public class DoblementeEncadenadas<E> extends CadenaGeneral {
 public NodoDoble<E> head;
 public int contador;
 public NodoDoble<E> tail;
    
 public DoblementeEncadenadas()
 {
     tail=null;
     head=null;
     contador=0;
 }
 public int size()
 {
     return contador;
 }
 
 public E peek()
 {
     try
     {
     return head.darValor();
     }
     catch(Exception e)
     {
         return null;
     }
 }
 
 public E pop()
 {
     if (contador!=0)
        {
            contador--;
        }
     NodoDoble<E> temp1=head;
     NodoDoble<E> temp2=head.darAnterior();
     head=head.darSiguiente();
     try
     {
     head.setAnterior(temp2);
     }
     catch(Exception e)
     {
         
     }
     try
     {
         head.darAnterior().setSiguiente(head);
     }
     catch(Exception e)
     {
         
     }
     return temp1.darValor();
 }

    @Override
    public void push(Object item) 
    {
        head=new NodoDoble<E>((E) item, head,tail);
        try
        {
        head.darSiguiente().setAnterior(head);
        }
        catch(Exception e)
        {
            
        }
        try
        {
        tail.setSiguiente(head);
        }
        catch(Exception e)
        {
            
        } 
        contador++;
    }
}
